home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / ddj0492.zip / DFLT11.ZIP / EMM.C < prev    next >
Text File  |  1992-02-03  |  1KB  |  58 lines

  1. /* ------------- emm.c --------------- */
  2.  
  3. /*
  4.  * LIM Expanded Memory Manager Driver Functions
  5.  * This is the resident EMM code.
  6.  */
  7.  
  8. #include "tsr.h"
  9.  
  10. /* ---- map EMM pages to addressable pages in memory ----- */
  11. int emm_map(int pagect, int first_pageno,
  12.             int first_logical_page, int handle)
  13. {
  14.     while (pagect--)    {
  15.         _AL = first_pageno++;
  16.         _AH = MAPEMM;
  17.         _BX = first_logical_page++;
  18.         _DX = handle;
  19.         if (emmint() == -1)
  20.             return -1;
  21.     }
  22.     return 0;
  23. }
  24.  
  25. /* ----- release the pages allocated to a handle ------ */
  26. int emm_release(int handle)
  27. {
  28.     _AH = RELEASEEMM;
  29.     _DX = handle;
  30.      return emmint();
  31. }
  32.  
  33. /* ---- save the current mapping context ----- */
  34. int emm_savecontext(int handle)
  35. {
  36.     _AH = SAVE;
  37.     _DX = handle;
  38.      return emmint();
  39. }
  40.  
  41. /* ----- restore a saved mapping context ------- */
  42. int emm_restorecontext(int handle)
  43. {
  44.     _AH = RESTOREEMM;
  45.     _DX = handle;
  46.      return emmint();
  47. }
  48.  
  49. /* ------ general EMM interrupt caller --------- */
  50. int emmint(void)
  51. {
  52.     geninterrupt(EMM);
  53.     if (_AH != 0)
  54.         return -1;
  55.     return 0;
  56. }
  57.  
  58.